Apache Uniffle (incubating) - 2022 年终总结
引言
2020 年底,Apache Uniffle (incubating) 在腾讯内部写下了他的第一行代码,21 年 11 月份对外开源,22 年中被捐献给了 Apache 基金会。自被捐献给了 Apache 基金会后,它吸引了较多来自各个公司的开发者。本文瑾对 Apache Uniffle (incubating) 2022 做个简单的小结。
时间线
Apache Uniffle (Incubating) 于 2022 年 6 月 6 日进行 Apache 孵化器,截止到 2022 年 12 月底 (当前写作时间:2022.12.26),共新建了 157 个 Issue (其中 76 个被关闭或者解决), 新增了 272 个 PRs (其中 264 个被合入或者关闭)。
Apache Uniffle (incubating) 2022 年共发布了两个版本:0.6.0 和 0.6.1。 其中:
- 2022.10.27:0.6.0 版本发布
- 2022.11.30:0.6.1 版本发布
0.6.0 版本是 Uniffle 进入到 Apache 孵化器后发布的第一个版本,它包括以下特点:
- 优化了 Coordinator 的分配机制
- 优化了
Shuffle Server
的调度策略 - 优化了性能和稳定性,
- 支持了需 Kerberos 验证的 HDFS
- 支持了 Uniffle K8S Operator,让其在可在云原生环境进行部署和应用。
0.6.1 版本是 0.6.0 版本之后的一个重要的 bug fix 版本,它主要修复了如下几个问题:
- MR 计算框架中,当 reudce task 个数超过 1024 时,partition 无法被访问的问题
- 并发注册 shuffle 导致了获取 shuffle 结果失败
- 在 WriteBufferManager#addRecord 处理 NPE
- 对于存在坏盘时,可能存在的内存泄漏
除上述已发布的两个版本,当前 master 分支中,引入了 local order,以应对 Spark AQE 的数据倾斜优化,相比于未优化版本,性能提升 3 倍。
社区运营情况
Apache Uniffle (incubating) 自进入孵化器以来,增加了贡献者22人,共有贡献者33人,贡献者来自腾讯,爱奇艺,Ebay,滴滴,顺丰,百度,字节,京东,B站,Databricks等互联网公司。在新增的 22 名贡献者中,Apache Uniffle (incubating) PMC 根据贡献度, 投票选择了新增了2名 committer。希望两位新增 Committer 可以在接下来的一年对 Apache Uniffle (incubating) 持续贡献。
使用情况
根据跟贡献者和使用者的线上/线下沟通交流,当前 Apache Uniffle (incubating) 在腾讯,爱奇艺,滴滴,顺丰,维品会,B 站,货拉拉等公司均有生产使用。多家公司 Uniffle 处理的 Shuffle 数据量日均超过 PB,运行的 App 数过万。其使用的场景除解决原生 shuffle 的稳定性/扩展性问题外,也为了满足存算分离的计算资源,提升整体资源的利用率。
后续规划
在 2023 年,Apache Uniffle(incubating) 将继续以提供高效,普适的 Shuffle Service 为目标。目前有如下的工作在规划列表中:
- 更完整地计算引擎生态:
- 支持 Tez 计算框架
- 支持 Flink 计算框架
- 更完备地存储介质支持:
- 高效支持对象存储
- HDD, SSD 等本地混合存储支持
- 性能优化:
- 使用 Netty 替换 gRPC
- Off-heap 内存管理, 应用 zero-copy技术, 减少数据拷贝
- 更多的企业级特性:
- 多租户隔离相关功能开发
- 稳定性和可靠性提升